package fun.ticsmyc.math;

import java.util.Random;

/**
 * 478. 在圆内随机生成点
 * @Author Ticsmyc
 * @Date 2022-06-05 16:32
 **/
public class 拒绝采样 {

    Random random = new Random();

    //拒绝采样， 生成圆内的点，先按照长方形生成，再判断是否在圆内。
    double r0;
    double x0;
    double y0;
    public double[] randPoint() {
        while(true){
            //随机x，y坐标范围
            double x = random.nextDouble() * (2 * r) - r; //定义了x范围为【-r，r】
            double y = random.nextDouble() * (2 * r) - r; //定义y范围【-r，r】
            if(x * x + y * y <= r * r){
                return new double[]{x + x0, y + y0};//加上圆的位置坐标，为圆内随机点
            }
        }
    }



    /**
     * 生成[-r,r]的随机double的方法 ： 先生成[0,2r]，再整体减去r
     * @return
     */
    int r=10;
    public double randomDouble(){
        return random.nextDouble()*(2*r)-r;
    }
}
